package day23;

import org.junit.Test;

/**
 * 异常的处理方法
 * @author: yyfei  
 * @email:  yyfei123@qq.com
 * 
 * 异常的处理方法：抓抛沫型
 * 过程一：“抛” ，程序在正常执行过程中，一旦出现异常，就会在异常代码处生成一个对应异常类的对象。
 *      并将此对象 抛出。
 *      一旦抛出对象后，后续代码不再执行。
 * 
 * 过程二：“抓” ，理解为异常的处理方式：
 *      1.try--carch--finally  
 *         结构：
 *         try{
 *         		//存放可能出现的代码
 *         }catch(异常类型1 变量名1){
 *         		//存放异常处理方式1
 *         }catch(异常类型2 变量名2){
 *         		//存放异常处理方式2
 *         }...finally{
 *         		//finally 是可选的，可以不写
 *         		//一定会执行的代码
 *         }
 *         
 *         备注：
 *         1.在没有写 finally 的情况下，try...catch 结构中 当异常匹配到某一个catch时，就进入catch中
 *           进行异常处理，一旦处理完成 就跳出当前的try..catch 结构了,然后继续执行之后的代码
 *         
 *         2.catch 中的异常类型，如果没父子关系，则没有顺序之分； 如果异常类型有
 *           子父类关系，则要求子类型声明必须在父类型之前
 *         
 *         3.常用的异常处理方式： 用 e.getMessage() 返回错误信息; 
 *           显示详细信息：e.printStackTrace()--常用;
 *         
 *         4.在try结构中声明的变量，在出了这个结构后将不能使用
 *         
 *         5.在try 或者 catch 中如果存在 return 语句；在代码的执行顺序中，也会先执行finally中的代码。再返回 返回值
 *           如果finally 中有return ;则会执行 finally 中的return 
 *         
 *         6.finally 一般使用的情况：数据库链接、输入输出流、网络编程Socket等资源，
 *           jvm 是不能自动回收的，需要我们手动进行资源的释放，此时的释放，就要声明在 finally 中。
 *         
 *         7.try ...catch 结构可以相互嵌套
 *         
 *         8.使用try...catch。。。finally 处理编译时异常，使得程序不在编译时就报错，但是运行时任然可能报错，
 *           相当于我们使用 try...catch 将一个编译时可能出现的异常 延迟到运行时出现
 *           
 *           开发中由于运行时异常比较常见，所以我们通常不针对运行时异常编写 try...catch..finally ,针对编译时异常，我们一定会考虑异常的处理
 *           
 *         
 *      2. throws
 * 
 */
public class ExceptionTest1 {
	public static void main(String[] args) {
		
	}
	@Test
	public void test1() {
		String  str="123";
		str="abc";
		try {
			int num=Integer.parseInt(str);
		} catch(NumberFormatException e) {
			System.out.println(e.getMessage());
			//System.out.println("出现异常");
			e.printStackTrace();
			
		} catch (Exception e) {
			// TODO: handle exception
			e.getMessage();
			System.out.println("类型转换异常");
		}
		
		//System.out.println("继续执行");
	}
	
}
